﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;
using System.Reflection;
using System.Web;

namespace Viewer.BusinessObject.BusinessEntities
{
    [Serializable()]
    public partial class NSNgheNghiep : BusinessBase
    {
        public string ThoiGian { get; set; }
        CommonCode common = new CommonCode();
        DataClassesDataContext db = new DataClassesDataContext();
        public string MaNghe { get; set; }
        public string TenNghe { get; set; }
        public string TenChuyenNganh { get; set; }
        public void EditNN(int hdId, DateTime ngayBatDau,DateTime ngayKetThuc, string noiDung, int codeIdNghe, int chuyenNganhId)
        {
            List<NSNgheNghiep> lst = (List<NSNgheNghiep>)HttpContext.Current.Session["NgheNghiep"];
            NSNgheNghiep pc = lst.Where(a => a.NgheNghiepId.Equals(hdId)).SingleOrDefault();
            pc.NgayBatDau = ngayBatDau;
            if (!ngayKetThuc.Year.Equals(1))
            {
                pc.NgayKetThuc = ngayKetThuc;
            }
            pc.GhiChu = noiDung;
            pc.CodeIdNgheNghiep = codeIdNghe;
            pc.MaNghe = common.LoadCodeStringById(codeIdNghe);
            pc.TenNghe = common.LoadCommonCodeById(codeIdNghe);
            pc.ChuyenNganhId = chuyenNganhId;
            pc.TenChuyenNganh = common.LoadCommonCodeById(chuyenNganhId);
        }
        public void DeleteNN(int hdId)
        {
            List<NSNgheNghiep> lst = (List<NSNgheNghiep>)HttpContext.Current.Session["NgheNghiep"];
            NSNgheNghiep pc = lst.Where(a => a.NgheNghiepId.Equals(hdId)).SingleOrDefault();
            lst.Remove(pc);
        }
        public void DeleletAllNgheNghiepByNhanVien(int nhanVienId)
        {
            var query = (from a in db.NSNgheNghieps
                         where a.NhanVienId.Equals(nhanVienId)
                         select a).ToList();
            if (query.Count > 0)
            {
                db.NSNgheNghieps.DeleteAllOnSubmit(query);
                db.SubmitChanges();
            }

        }
        public void UpdateNgheNghiep_NhanVien(int nhanVienId, List<NSNgheNghiep> obj)
        {

            var queryNBLByNhanVienId = (from a in db.NSNgheNghieps
                                        where a.NhanVienId.Equals(nhanVienId)
                                        select a).ToList();
            if (queryNBLByNhanVienId.Count > 0)
            {
                db.NSNgheNghieps.DeleteAllOnSubmit(queryNBLByNhanVienId);
                db.SubmitChanges();
            }

            foreach (NSNgheNghiep pc in obj)
            {
                NSNgheNghiep item = new NSNgheNghiep();
                CopyNSNgheNghiep(pc, item);
                db.NSNgheNghieps.InsertOnSubmit(item);
            }
            db.SubmitChanges();

        }
        private void CopyNSNgheNghiep(NSNgheNghiep src, NSNgheNghiep des)
        {
            des.CodeIdNgheNghiep = src.CodeIdNgheNghiep;
            des.TenChuyenNganh = src.TenChuyenNganh;
            des.NhanVienId = src.NhanVienId;
            des.NgayBatDau = src.NgayBatDau;
            if (src.NgayKetThuc.HasValue)
            {
                des.NgayKetThuc = src.NgayKetThuc;
            }
            des.TenNghe = src.TenNghe;
            des.MaNghe = src.MaNghe;
            des.GhiChu = src.GhiChu;
            des.ChuyenNganhId = src.ChuyenNganhId;
        }
        public List<NSNgheNghiep> LoadNgheNghiepByNhanVienId(int nhanVienId)
        {

            var query = (from a in db.NSNgheNghieps
                         where a.NhanVienId.Equals(nhanVienId)
                         orderby a.NhanVienId descending
                         select a).ToList();
            foreach (NSNgheNghiep item in query)
            {
                item.MaNghe = common.LoadCodeStringById((int)item.CodeIdNgheNghiep);
                item.TenNghe = common.LoadCommonCodeById((int)item.CodeIdNgheNghiep);
                item.TenChuyenNganh = item.ChuyenNganhId.HasValue && item.ChuyenNganhId.Value > 0 ? common.LoadCommonCodeById(item.ChuyenNganhId.Value) : string.Empty;
                string ngayKetThuc = string.Empty;
                if (item.NgayKetThuc != null)
                {
                    ngayKetThuc = !item.NgayKetThuc.Value.Year.Equals(0001) ? " - " + item.NgayKetThuc.Value.ToString("dd/MM/yyyy") : string.Empty;
                }
                item.ThoiGian = string.Format("{0}{1}", item.NgayBatDau.Value.ToString("dd/MM/yyyy"), ngayKetThuc);
            }
            return query;

        }
        public NSNgheNghiep GetNgheNghiep(int nhanVienId, DateTime ngayBatDau, DateTime ngayKetThuc, string noiDung, int codeIdNghe, int chuyenNganhId)
        {
            var db = new DataClassesDataContext();
            NSNgheNghiep hd = new NSNgheNghiep();
            hd.NgheNghiepId = 0 - DateTime.Now.Second;
            hd.NgayBatDau = ngayBatDau;
            if (!ngayKetThuc.Year.Equals(1))
            {
                hd.NgayKetThuc = ngayKetThuc;
            }
            hd.GhiChu = noiDung;
            hd.NhanVienId = nhanVienId;
            hd.CodeIdNgheNghiep = codeIdNghe;
            hd.MaNghe = common.LoadCodeStringById(codeIdNghe);
            hd.TenNghe = common.LoadCommonCodeById(codeIdNghe);
            hd.ChuyenNganhId = chuyenNganhId;
            hd.TenChuyenNganh = common.LoadCommonCodeById(chuyenNganhId);
            return hd;
        }
        public NSNgheNghiep GetNgheNghiepMoiNhatByNhanVienID(int nhanVienId)
        {
            var query = (from a in db.NSNgheNghieps
                         where a.NhanVienId.Equals(nhanVienId)
                         orderby a.NgayBatDau descending
                         select a).ToList();
            if (query.Count > 0)
            {
                return query[0];
            }
            else return null;
        }
    }
}